#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int Maxn=3e5+6;
int n,Q;
struct Seg{
	int l,r;
}a[Maxn];

int main(){
	freopen("study.in","r",stdin);
	freopen("study.out","w",stdout);
	scanf("%d%d",&n,&Q);
	for(int i=1;i<n;i++){
		scanf("%d%d",&a[i].l,&a[i].r);
		a[i].r--;
	}
	if(n<=1000 and Q<=1000){
		while(Q--){
			int opt,p,s,e;
			int b,c,d,f;
			scanf("%d",&opt);
			if(opt==1){
				scanf("%d%d%d",&p,&s,&e);
				a[p].l=s,a[p].r=e-1;
			}
			else{
				scanf("%d%d%d%d",&b,&c,&d,&f);
				int tm=c;
				ll ans=0;
				if(d>b){
					for(int i=b;i<d;i++){
						if(tm>a[i].r){
							ans+=tm-a[i].r;
							tm=a[i].r;
						}
						if(tm<a[i].l) tm=a[i].l;
						tm++;
					}
				}
				else{
					for(int i=b-1;i>=d;i--){
						if(tm>a[i].r){
							ans+=tm-a[i].r;
							tm=a[i].r;
						}
						if(tm<a[i].l) tm=a[i].l;
						tm++;
					}
				}
				
				if(tm>f) ans+=tm-f;
				printf("%lld\n",ans);
			}
		}
	}
	return 0;
}
/*
5 5
3 5
4 8
2 6
5 10
2 5 3 1 10
2 2 6 5 6
1 3 4 6
2 3 3 4 3
2 4 5 1 5
*/
